/*
 * GenericSipmModel.cc
 *
 * @created Apr 23, 2013
 * @author Tim Niggemann, III Phys. Inst. A, RWTH Aachen University
 * @copyright GNU General Public License v3.0
 */

#include "model/impl/G4SipmGenericSipmModel.hh"

#include "model/impl/G4SipmGenericVoltageTraceModel.hh"
#include "model/impl/G4SipmRandomGainMapModel.hh"

#include "CLHEP/Units/SystemOfUnits.h"

G4SipmGenericSipmModel::G4SipmGenericSipmModel() : G4SipmModel(new G4SipmRandomGainMapModel, new G4SipmGenericVoltageTraceModel)
{
	//
}
// 获取模型名称
std::string G4SipmGenericSipmModel::getName() const
{
	return "generic";
}
// 获取击穿电压，单位为V
double G4SipmGenericSipmModel::getBreakdownVoltage() const
{
	return 70. * CLHEP::volt;
}
// 获取像素个数
unsigned int G4SipmGenericSipmModel::getNumberOfCells() const
{
	return 100;
}
// 获取像素间距，单位为um
double G4SipmGenericSipmModel::getCellPitch() const
{
	return 100 * CLHEP::micrometer;
}
// 获取热噪声率，单位为MHz
double G4SipmGenericSipmModel::getThermalNoiseRate() const
{
	return 1. * CLHEP::megahertz;
}
// 获取死时间，单位为ps
double G4SipmGenericSipmModel::getDeadTime() const
{
	return 1. * CLHEP::picosecond;
}
// 获取恢复时间，单位为ns
double G4SipmGenericSipmModel::getRecoveryTime() const
{
	return 30. * CLHEP::nanosecond;
}
// 获取串扰概率，单位为百分比
double G4SipmGenericSipmModel::getCrossTalkProbability() const
{
	return 20. * CLHEP::perCent;
}
// 获取长尾后脉冲概率
double G4SipmGenericSipmModel::getApProbLong() const
{
	return 10. * CLHEP::perCent;
}
// 获取短尾后脉冲概率，单位为百分比
double G4SipmGenericSipmModel::getApProbShort() const
{
	return 20. * CLHEP::perCent;
}
// 获取长尾后脉冲时间常数，单位为ns
double G4SipmGenericSipmModel::getApTauLong() const
{
	return 120. * CLHEP::nanosecond;
}
// 获取短尾后脉冲时间常数，单位为ns
double G4SipmGenericSipmModel::getApTauShort() const
{
	return 40. * CLHEP::nanosecond;
}
// 获取填充因子，单位为百分比
double G4SipmGenericSipmModel::getFillFactor() const
{
	return 78.5 * CLHEP::perCent;
}
// 获取增益变化百分比，增益变化的步进值，单位为百分比
double G4SipmGenericSipmModel::getGainVariation() const
{
	return 0.5 * CLHEP::perCent;
}
// 获取光电转换效率，单位为百分比
double G4SipmGenericSipmModel::getPhotonDetectionEfficiency(double) const
{
	return 30. * CLHEP::perCent;
}
